Whenever you’re describing a function that takes a callback, you
should always annotate the callback argument with the argument that
contains the user data using the (closure argument) annotation
You should not annotate the data argument with a unary (closure).
The unary (closure) is meant to be used when annotating the callback
type
Recently gobject-introspection became a bit more strict with this and
that generated some warnings:
Warning: St: invalid "closure" annotation: only valid on callback
parameters
magnifier: Use the new get_client_content_rect API
As we have removed is_client_decorated from Mutter in the last release.
Instead of re-adding it and re-exposing SSD/CSD differences and making
gnome-shell deal with that, we created a new API that does exactly what
is_client_decorated was used for, so switch to using that.
data: Add X-GNOME-Shell-Utilities.directory file to allow showing real name
Instead of having the name of the directory be X-GNOME-Utilities. This
also allows translating the name to the user's language. The name is
chose to be different to X-GNOME-Utilities from GNOME Menus.
In the process, also remove the categories. The menu definition from
gnome-menus is not used, and it's not a category that apps list
themselves, so it's completely unused anyway.
Florian Müllner [Mon, 21 Oct 2024 21:23:29 +0000 (23:23 +0200)]
shell/plugin: Stop implementing plugin_info()
The hook would be optional if anything called `meta_plugin_get_info()`,
except that nothing has done so for the last ten years.
It seems a bit pointless to export information that is completely
unused, in particular as we never updated it ("version 0.1"?!),
so just stop doing that.
Sebastian Keller [Mon, 21 Oct 2024 19:53:14 +0000 (21:53 +0200)]
st/theme-node-drawing: Don't skip square top left inset shadow corners
When the inner radius of the top left corner is 0, the corresponding arc
does not get drawn, resulting in a path going from the bottom left
corner to the top right corner when the path is closed.
Fix this by always including a line_to from the bottom left to the top
left corner.
Fixes: dde13b30c ("st/theme-node-drawing: Trace the correct path for inset box shadows") Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/7996
Florian Müllner [Mon, 21 Oct 2024 00:33:33 +0000 (02:33 +0200)]
build: Do not require appstream-util for metainfo version check
appstream-util is deprecated in favor of appstreamcli. The new tool
does not have a `validate-version` command, so implement the check
in directly in the check-version.py script.
Florian Müllner [Fri, 18 Oct 2024 11:46:07 +0000 (13:46 +0200)]
style: Restore password entry width harder
Commit ee0538807 restored the fixed password entry width, but only
for entries nested under .prompt-dialog-password-layout. That
does not include the network secret dialog, so go back to the
original styling prior to commit 8d065b558e where the width
is set for all password entries, and the mount operation overrides
it with a more specific rule.
Florian Müllner [Thu, 17 Oct 2024 17:34:13 +0000 (19:34 +0200)]
style: Restore password entry width
Commit removed the fixed width that is used by polkit/keyring
prompts, with the result that the entries now start at their
natural size, and grow as text is entered.
Restore the original behavior, but nest the style under
.prompt-dialog-password-layout (polkit/keyring) to better
differentiate it from entries under ..prompt-dialog-password-grid
(mount operations).
Fixes: 8d065b558e ("style: Clean up dialogs stylesheet to fix layout issues")
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3511>
Sam Hewitt [Mon, 16 Sep 2024 14:44:44 +0000 (12:14 -0230)]
style: Clean up dialogs stylesheet to fix layout issues
- remove unnecessary dialog type-specific padding, spacing and margin definitions that led to layout to problems
- bump the size of user avatar in authentication dialog
- nest css classes in the sass to better reflect the structure of dialog elements
- sync style of audio device selector with switcher-popup style
- sync text and padding styles with other elements
- fix incorrect button order in audio selection dialog
Florian Müllner [Thu, 20 Jun 2024 18:46:18 +0000 (20:46 +0200)]
extensionUtils: Include arrays and objects in serialization
We currently only handle simple types when (de)serializing,
which means we miss keys like "shell-version" and "session-modes".
While there is no immediate use for those, handing arrays and
objects will allow to support the newly added "donate" metadata
in the Extensions app in the future.
Guacamolie [Sun, 13 Oct 2024 13:52:44 +0000 (15:52 +0200)]
js: Update Meta.KeyHandlerFunc arguments
The Meta keybinding API now exposes the Clutter event to GJS, which was
previously hidden due to it being a gpointer. Since this moves the
binding argument one argument to the right on the GJS side, any code
that was using the binding argument needs to be updated.
Florian Müllner [Fri, 11 Oct 2024 12:30:44 +0000 (14:30 +0200)]
status/keyboard: Always released held keyboard after activating source
As the keyboard is released asynchronously after setting the ibus
engine, there's a possibility that the `this._reloading` property
changed in the meantime.
To ensure that `holdKeyboard()` and `releaseKeyboard()` are correctly
paired, record the condition in a local variable so that it maintains
its value in the callback.
status/keyboard: Fix execution order when activating source
When commit ce89b15bb123d made the code async, it did not only
delay releasing the keyboard until after the engine has been
updated, but also the following code that updates the current
input source.
One result is that the current source is now initialized later,
which breaks any code that relies on the source being set.
This affects the login screen in particular (which uses different
`InputSourceSettings` than the regular session): It fails to come
up entirely if the OSK is enabled.
To fix the issue, use a .then() callback to release the keyboard,
instead of blocking all following code with await.
Fixes: ce89b15bb1 ("ibusManager: Use async await instead of callbacks") Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/7912
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3476>
Florian Müllner [Fri, 4 Oct 2024 11:24:46 +0000 (13:24 +0200)]
tools/toolbox: Skip install step with --dist
The dist command only needs an up-to-date build directory, it
does not require the project to be installed first.
While the install step is generally quick, leaving the container
file system alone can save a rebuild after the dist is done
(for instance when testing a branch, then temporarily switching
to the release branch for dist).
Florian Müllner [Fri, 4 Oct 2024 11:10:35 +0000 (13:10 +0200)]
tools/toolbox: Small refactor
Handing the various options to different meson commands in meson-build
gets a bit tedious. Instead of handling them all on the toplevel,
split out *_command() functions that generate the commandline for
the corresponding meson command.
That way, options are handled locally where they matter, which
makes future changes and additions a bit easier.
Daniel van Vugt [Thu, 26 Sep 2024 10:26:21 +0000 (18:26 +0800)]
st/theme-node-drawing: Trace the correct path for inset box shadows
Previously we just copied the outer path and scaled it down, but that
resulted in an inconsistent thickness at the corners because the pivot
points for the arcs also moved inward.
So now we trace the inset path explicitly to maintain the correct
thickness (spread) around all the corners.
The spec actually mentions you need to do it in section 6.1 [1]:
> Note that for inner shadows, expanding the shadow (creating more
> shadow area) means contracting the shadow’s perimeter shape.
Despite the fact the example diagram gets it wrong in section 6.1.1 [2],
it does then follow with more confirmation that the shadow radius should
be reduced:
> To preserve the box’s shape when spread is applied, the corner radii
> of the shadow are also increased (decreased, for inner shadows) from
> the border-box (padding-box) radii by adding (subtracting) the spread
> distance (and flooring at zero).
gdm: Actually wait for pending messages being notified on failures
We had code to ensure that all the queued messages sent by a PAM module
were shown by waiting some time to give the user time to read them, but
due to a typo this code never executed.
Alessandro Bono [Fri, 20 Oct 2023 20:00:59 +0000 (22:00 +0200)]
locatePointer: Mark the animation as required
When the accessibility option "Reduce Animation" is turned on, the
accessibility option "Locate Pointer" stops to work. This is because
the animation is not marked as required. Mark it as such.
Alessandro Bono [Fri, 20 Oct 2023 20:00:55 +0000 (22:00 +0200)]
ripples: Allow to specify whether the ripple is required
The ripples are used both for the "Hot Corner" animation and for the
"Locate Pointer" animation. The latter one is an accessibility feature
and should always work, even when animations are disabled. Take this
into account.
Alessandro Bono [Fri, 20 Oct 2023 20:00:47 +0000 (22:00 +0200)]
environment: Allow marking animations as required
There are cases when we want to mark an animation as required. For
example, we want the "Locate Pointer" animation to work even when
the animation as marked as disabled. Take this into account when
easing an actor.
Alessandro Bono [Fri, 20 Oct 2023 20:00:40 +0000 (22:00 +0200)]
animationUtils: Allow marking animations as required
There are cases when we want to mark an animation as required. For
example, we want the "Locate Pointer" animation to work even when
the animation is marked as disabled. Take this into account when
adjusting the animation time.
All timing parameters should take the `slow-down-factor` and
`enable-animations` settings into account, but the delay parameter
of property/adjustment animations was forgotten.